package com.huike.report.service;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.vo.*;

import java.util.List;
import java.util.Map;

public interface ReportService {
    /**
     * 客户统计新增客户数报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo contractStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计学科分布统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> subjectStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 客户统计明细列表
     * @param contract
     * @return
     */
    List<TbContract> contractStatisticsList(TbContract contract);



    /**
     * 销售统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo salesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属渠道明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> channelStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属部门明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * 销售统计归属人报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);



    /**
     * 线索统计新增线索数量报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo cluesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 线索统计线索转换率报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime);

    /**
     * 线索统计明细列表
     * @param tbClue
     * @return
     */
    List<TbClue> cluesStatisticsList(TbClue tbClue);



    /**
     * 渠道统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> chanelStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 渠道统计-活动统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String,Object>> activityStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 渠道统计活动明细列表
     * @param activity
     * @return
     */
    List<ActivityStatisticsVo> activityStatisticsList(TbActivity activity);


    /**
     * 基础数据统计接口
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime);

    /**
     * 获取今日简报数据
     * @return
     */
    IndexTodayInfoVO getTodayInfo(String today);

    /**
     * 获取待办数据
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime);

    /**
     * 线索转化成龙虎榜
     * @param indexStatisticsVo
     * @return
     */
    List<Map<String, Object>> salesStatistic(IndexStatisticsVo indexStatisticsVo);

    /**
     * 商机转换龙虎榜
     * @param request
     * @return
     */
    List<Map<String, Object>> businessChangeStatistics(IndexStatisticsVo request);
}
